package com.dp.appi.dao;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by xiaoji on 2016/5/9.
 */
public interface ExplorationDao extends BaseDao {

    /**
     * 获取踏勘数据类别
     * @param stage_id 阶段id
     * @param id 当前用户
     * @return
     */
    Integer getClassify(Long stage_id,String id);

    /**
     * 获取踏勘点列表
     * @param exploration_type 踏勘类型(新建11 / 拆旧12)
     * @param stage_id 项目阶段id
     * @param classify 数据类型
     * @return
     */
    List<Map<String,Object>> explorationList(Integer exploration_type,Long stage_id,Integer classify,Long explor_id);


    /**
     * 获取10kv踏勘点（点位点）列表
     * @param exploration_type
     * @param stage_id
     * @param classify
     * @return
     */
    List<Map<String,Object>> explorationList_high(String exploration_type,Long stage_id,Integer classify);

    /**
     * 是否具有操作踏勘点的权限
     * @param exploration_id 踏勘类型
     * @param id 当前用户id
     * @return
     */
    boolean isDelExplor(Long exploration_id,String id);

    /**
     * 删除踏勘点
     * @param exploration_id 踏勘点id
     */
    void delExplor(Long exploration_id);

    /**
     * 获取踏勘点信息【app端获取点位信息】
     * @return
     */
    Map<String,Object> explorInfo(Long exploration_id);

    /**
     * 获取踏勘点信息
     *
     * @param exploration_id
     * @return
     */
    public Map<String, Object> explorBaseInfo(Long exploration_id) ;


    /**
     * 获取点信息【app端获取内档距】
     * @param id 信息id
     * @param pt_id 点类型id
     * @return
     */
    Map<String,Object> pointInfo(Long id,Long pt_id);


    /**
     * 踏勘点信息设置
     * @param param 踏勘点参数
     * @param id 当前用户id
     */
    Long addExploration(Map<String,String> param,String id);

    /**
     * 添加搭火点
     * @param param 搭火点属性
     */
    Long addWiring(Map<String,String> param);

    /**
     * 添加表计
     * @param param
     * @return
     */
    Long addBj(Map<String,String> param);

    /**
     * 添加柱上变压器
     * @param param 柱上变压器属性
     * @return
     */
    Long addTransformer(Map<String,String> param);

    /**
     * 杆塔
     * @param param 杆塔属性
     * @return
     */
    Long addPole(Map<String,String> param,String voltage_grade);

    /**
     * 下户点
     * @param param 下户点 属性
     * @return
     */
    Long addUserPoint(Map<String,String> param);

    /**
     * 户表箱
     * @param param 户表箱 属性
     * @return
     */
    Long addUserElecbox(Map<String,String> param);

    /**
     * 植被
     * @param param 植被 属性
     * @return
     */
    Long addVegetation(Map<String,String> param);

    /**
     * 房屋
     * @param param 房屋参数
     * @return
     */
    Long addHouses(Map<String,String> param);

    /**
     * 通讯线
     * @param param 通讯线属性
     * @return
     */
    Long addCommLine(Map<String,String> param);

    /**
     * 低压线路
     * @param param 低压线路属性
     * @return
     */
    Long addLowLine(Map<String,String> param);

    /**
     * 沟河流
     * @param param 沟河流属性
     * @return
     */
    Long addRivers(Map<String,String> param);

    /**
     * 道路
     * @param param 道路属性
     * @return
     */
    Long addRoad(Map<String,String> param);

    /**
     * 高压线路
     * @param param 高压线路属性
     * @return
     */
    Long addHighLine(Map<String,String> param);

    /**
     * 踏勘点信息继续设置
     * @param exploration_id 踏勘点id
     */
    void conAddExploration(Long exploration_id);

    /**
     * 获取定位点上级定位点
     * @param exploration_id 获取踏勘点id
     */
    Map<String,Object> beforeExp(Long exploration_id);

    /**
     * 判断特征点是否存在
     * @param exploration_id
     * @return
     */
    boolean isExistFeature(Long exploration_id,int ptType);


    /**
     * 判断特征点是否已经关联
     *
     * @param featureId
     * @return
     */
    boolean isCorrFeature(Long featureId);

    /**
     * 通过通道id获取特征点信息
     *
     * @param channelID
     * @return
     */
    Map<String,Object> explorBaseInfoByChannelID(Long channelID);

    /**
     * 更新踏勘典设
     * @param codesetId
     * @param explorationId
     */
    void upCodeSet(Long codesetId, Long explorationId);


    /**
     * 获取台区
     * @param stage_id
     * @return
     */
    List<Map<String,Object>> transformerList(Long stage_id,int classfy);

    /**
     * number、 before_exp、exploration_type、pt_id、lng、lat、corner、alt、distance、location_way
     *
     * @param param
     * @param explorationId
     */
    void upExploration(Map<String, Object> param, Long explorationId);

    /**
     * 更新转角
     *
     * @param exp_id
     * @param corner
     */
    public void upBeforeExpCorner(Object exp_id, Object corner) ;

    /**
     * 根据上一级踏勘点id获取变压器id(所属台区)
     *
     * @param beforeExp
     * @return
     */
    public Long getExplorIdByBeforeExp(Long beforeExp, List<Long> be);

    public void upjckyExploration(Long exploration_id, Long new_before_exp_id);
    public Double returnCorner(Long exploration_id,double lng,double lat,Long befor_id,String type);

    Map<String,Object> exp_obj(double lng,double lat,Long befor_id);


    Long update_or_save_pole(Long exploration_id);

    /**
     * 点位重新选择上联后下联中所有点位的台区标识更新
     */
    void updateExp_id(Long exploration_id,Long before_exp_id);

    void updateNum(String num,Object stage_id,Object pt_id);

    /**
     *修改通道特征点距离上级距离
     * @param exploration_id
     * @param distance
     */
    void upExpDistance(Long exploration_id, Float distance);
}
